package main

import (
	"fmt"
	"sync"
)

// 如果解决主 goroutine在子协程结束后自动结束
var wg sync.WaitGroup

// WaitGroup 提供了三个有用函数
/*
Add 设置值数量 就是启动协程的数量
Done 每次运行减1
Wait 阻塞线程知道内部计数器为0
*/
func main() {
	// wg.Add(5)// 知道数量直接在外边设置为+5也可以
	for i := 0; i < 5; i++ {
		wg.Add(1) // 每次+1
		go func(n int) {
			defer wg.Done()
			fmt.Println(n)
		}(i)
	}
	wg.Wait()
}
